home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 19 / CU Amiga Magazine's Super CD-ROM 19 (1998)(EMAP Images)(GB)[!][issue 1998-02].iso / CUCD / Programming / ixemul / include / sys / termios.h < prev    next >
C/C++ Source or Header  |  1997-10-28  |  9KB  |  282 lines

  1. /*    $NetBSD: termios.h,v 1.13 1995/04/22 13:03:10 cgd Exp $    */
  2.  
  3. /*
  4.  * Copyright (c) 1988, 1989, 1993, 1994
  5.  *    The Regents of the University of California.  All rights reserved.
  6.  *
  7.  * Redistribution and use in source and binary forms, with or without
  8.  * modification, are permitted provided that the following conditions
  9.  * are met:
  10.  * 1. Redistributions of source code must retain the above copyright
  11.  *    notice, this list of conditions and the following disclaimer.
  12.  * 2. Redistributions in binary form must reproduce the above copyright
  13.  *    notice, this list of conditions and the following disclaimer in the
  14.  *    documentation and/or other materials provided with the distribution.
  15.  * 3. All advertising materials mentioning features or use of this software
  16.  *    must display the following acknowledgement:
  17.  *    This product includes software developed by the University of
  18.  *    California, Berkeley and its contributors.
  19.  * 4. Neither the name of the University nor the names of its contributors
  20.  *    may be used to endorse or promote products derived from this software
  21.  *    without specific prior written permission.
  22.  *
  23.  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  24.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  25.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  26.  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  27.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  28.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  29.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  30.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  31.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  32.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  33.  * SUCH DAMAGE.
  34.  *
  35.  *    @(#)termios.h    8.3 (Berkeley) 3/28/94
  36.  */
  37.  
  38. #ifndef _SYS_TERMIOS_H_
  39. #define _SYS_TERMIOS_H_
  40.  
  41. /* 
  42.  * Special Control Characters 
  43.  *
  44.  * Index into c_cc[] character array.
  45.  *
  46.  *    Name         Subscript    Enabled by 
  47.  */
  48. #define    VEOF        0    /* ICANON */
  49. #define    VEOL        1    /* ICANON */
  50. #ifndef _POSIX_SOURCE
  51. #define    VEOL2        2    /* ICANON */
  52. #endif
  53. #define    VERASE        3    /* ICANON */
  54. #ifndef _POSIX_SOURCE
  55. #define VWERASE     4    /* ICANON */
  56. #endif 
  57. #define VKILL        5    /* ICANON */
  58. #ifndef _POSIX_SOURCE
  59. #define    VREPRINT     6    /* ICANON */
  60. #endif
  61. /*            7       spare 1 */
  62. #define VINTR        8    /* ISIG */
  63. #define VQUIT        9    /* ISIG */
  64. #define VSUSP        10    /* ISIG */
  65. #ifndef _POSIX_SOURCE
  66. #define VDSUSP        11    /* ISIG */
  67. #endif
  68. #define VSTART        12    /* IXON, IXOFF */
  69. #define VSTOP        13    /* IXON, IXOFF */
  70. #ifndef _POSIX_SOURCE
  71. #define    VLNEXT        14    /* IEXTEN */
  72. #define    VDISCARD    15    /* IEXTEN */
  73. #endif
  74. #define VMIN        16    /* !ICANON */
  75. #define VTIME        17    /* !ICANON */
  76. #ifndef _POSIX_SOURCE
  77. #define VSTATUS        18    /* ICANON */
  78. /*            19       spare 2 */
  79. #endif
  80. #define    NCCS        20
  81.  
  82. #define _POSIX_VDISABLE    ((unsigned char)'\377')
  83.  
  84. #ifndef _POSIX_SOURCE
  85. #define CCEQ(val, c)    (c == val ? val != _POSIX_VDISABLE : 0)
  86. #endif
  87.  
  88. /*
  89.  * Input flags - software input processing
  90.  */
  91. #define    IGNBRK        0x00000001    /* ignore BREAK condition */
  92. #define    BRKINT        0x00000002    /* map BREAK to SIGINTR */
  93. #define    IGNPAR        0x00000004    /* ignore (discard) parity errors */
  94. #define    PARMRK        0x00000008    /* mark parity and framing errors */
  95. #define    INPCK        0x00000010    /* enable checking of parity errors */
  96. #define    ISTRIP        0x00000020    /* strip 8th bit off chars */
  97. #define    INLCR        0x00000040    /* map NL into CR */
  98. #define    IGNCR        0x00000080    /* ignore CR */
  99. #define    ICRNL        0x00000100    /* map CR to NL (ala CRMOD) */
  100. #define    IXON        0x00000200    /* enable output flow control */
  101. #define    IXOFF        0x00000400    /* enable input flow control */
  102. #ifndef _POSIX_SOURCE
  103. #define    IXANY        0x00000800    /* any char will restart after stop */
  104. #define IMAXBEL        0x00002000    /* ring bell on input queue full */
  105. #endif  /*_POSIX_SOURCE */
  106.  
  107. /*
  108.  * Output flags - software output processing
  109.  */
  110. #define    OPOST        0x00000001    /* enable following output processing */
  111. #ifndef _POSIX_SOURCE
  112. #define ONLCR        0x00000002    /* map NL to CR-NL (ala CRMOD) */
  113. #define OXTABS        0x00000004    /* expand tabs to spaces */
  114. #define ONOEOT        0x00000008    /* discard EOT's (^D) on output) */
  115. #endif  /*_POSIX_SOURCE */
  116.  
  117. /*
  118.  * Control flags - hardware control of terminal
  119.  */
  120. #ifndef _POSIX_SOURCE
  121. #define    CIGNORE        0x00000001    /* ignore control flags */
  122. #endif
  123. #define CSIZE        0x00000300    /* character size mask */
  124. #define     CS5            0x00000000        /* 5 bits (pseudo) */
  125. #define     CS6            0x00000100        /* 6 bits */
  126. #define     CS7            0x00000200        /* 7 bits */
  127. #define     CS8            0x00000300        /* 8 bits */
  128. #define CSTOPB        0x00000400    /* send 2 stop bits */
  129. #define CREAD        0x00000800    /* enable receiver */
  130. #define PARENB        0x00001000    /* parity enable */
  131. #define PARODD        0x00002000    /* odd parity, else even */
  132. #define HUPCL        0x00004000    /* hang up on last close */
  133. #define CLOCAL        0x00008000    /* ignore modem status lines */
  134. #ifndef _POSIX_SOURCE
  135. #define    CRTSCTS        0x00010000    /* RTS/CTS full-duplex flow control */
  136. #define    CRTS_IFLOW    CRTSCTS        /* XXX compat */
  137. #define    CCTS_OFLOW    CRTSCTS        /* XXX compat */
  138. #define    MDMBUF        0x00100000    /* DTR/DCD hardware flow control */
  139. #define    CHWFLOW        (MDMBUF|CRTSCTS) /* all types of hw flow control */
  140. #endif
  141.  
  142.  
  143. /* 
  144.  * "Local" flags - dumping ground for other state
  145.  *
  146.  * Warning: some flags in this structure begin with
  147.  * the letter "I" and look like they belong in the
  148.  * input flag.
  149.  */
  150.  
  151. #ifndef _POSIX_SOURCE
  152. #define    ECHOKE        0x00000001    /* visual erase for line kill */
  153. #endif  /*_POSIX_SOURCE */
  154. #define    ECHOE        0x00000002    /* visually erase chars */
  155. #define    ECHOK        0x00000004    /* echo NL after line kill */
  156. #define ECHO        0x00000008    /* enable echoing */
  157. #define    ECHONL        0x00000010    /* echo NL even if ECHO is off */
  158. #ifndef _POSIX_SOURCE
  159. #define    ECHOPRT        0x00000020    /* visual erase mode for hardcopy */
  160. #define ECHOCTL      0x00000040    /* echo control chars as ^(Char) */
  161. #endif  /*_POSIX_SOURCE */
  162. #define    ISIG        0x00000080    /* enable signals INTR, QUIT, [D]SUSP */
  163. #define    ICANON        0x00000100    /* canonicalize input lines */
  164. #ifndef _POSIX_SOURCE
  165. #define ALTWERASE    0x00000200    /* use alternate WERASE algorithm */
  166. #endif  /*_POSIX_SOURCE */
  167. #define    IEXTEN        0x00000400    /* enable DISCARD and LNEXT */
  168. #define EXTPROC         0x00000800      /* external processing */
  169. #define TOSTOP        0x00400000    /* stop background jobs from output */
  170. #ifndef _POSIX_SOURCE
  171. #define FLUSHO        0x00800000    /* output being flushed (state) */
  172. #define    NOKERNINFO    0x02000000    /* no kernel output from VSTATUS */
  173. #define PENDIN        0x20000000    /* XXX retype pending input (state) */
  174. #endif  /*_POSIX_SOURCE */
  175. #define    NOFLSH        0x80000000    /* don't flush after interrupt */
  176.  
  177. typedef unsigned int    tcflag_t;
  178. typedef unsigned char    cc_t;
  179. typedef unsigned int    speed_t;
  180.  
  181. struct termios {
  182.     tcflag_t    c_iflag;    /* input flags */
  183.     tcflag_t    c_oflag;    /* output flags */
  184.     tcflag_t    c_cflag;    /* control flags */
  185.     tcflag_t    c_lflag;    /* local flags */
  186.     cc_t        c_cc[NCCS];    /* control chars */
  187.     int        c_ispeed;    /* input speed */
  188.     int        c_ospeed;    /* output speed */
  189. };
  190.  
  191. /* 
  192.  * Commands passed to tcsetattr() for setting the termios structure.
  193.  */
  194. #define    TCSANOW        0        /* make change immediate */
  195. #define    TCSADRAIN    1        /* drain output, then change */
  196. #define    TCSAFLUSH    2        /* drain output, flush input */
  197. #ifndef _POSIX_SOURCE
  198. #define TCSASOFT    0x10        /* flag - don't alter h.w. state */
  199. #endif
  200.  
  201. /*
  202.  * Standard speeds
  203.  */
  204. #define B0    0
  205. #define B50    50
  206. #define B75    75
  207. #define B110    110
  208. #define B134    134
  209. #define B150    150
  210. #define B200    200
  211. #define B300    300
  212. #define B600    600
  213. #define B1200    1200
  214. #define    B1800    1800
  215. #define B2400    2400
  216. #define B4800    4800
  217. #define B9600    9600
  218. #define B19200    19200
  219. #define B38400    38400
  220. #ifndef _POSIX_SOURCE
  221. #define B7200    7200
  222. #define B14400    14400
  223. #define B28800    28800
  224. #define B57600    57600
  225. #define B76800    76800
  226. #define B115200    115200
  227. #define B230400    230400
  228. #define EXTA    19200
  229. #define EXTB    38400
  230. #endif  /* !_POSIX_SOURCE */
  231.  
  232. #ifndef _KERNEL
  233.  
  234. #define    TCIFLUSH    1
  235. #define    TCOFLUSH    2
  236. #define TCIOFLUSH    3
  237. #define    TCOOFF        1
  238. #define    TCOON        2
  239. #define TCIOFF        3
  240. #define TCION        4
  241.  
  242. #include <sys/cdefs.h>
  243.  
  244. __BEGIN_DECLS
  245. speed_t    cfgetispeed __P((const struct termios *));
  246. speed_t    cfgetospeed __P((const struct termios *));
  247. int    cfsetispeed __P((struct termios *, speed_t));
  248. int    cfsetospeed __P((struct termios *, speed_t));
  249. int    tcgetattr __P((int, struct termios *));
  250. int    tcsetattr __P((int, int, const struct termios *));
  251. int    tcdrain __P((int));
  252. int    tcflow __P((int, int));
  253. int    tcflush __P((int, int));
  254. int    tcsendbreak __P((int, int));
  255.  
  256. #ifndef _POSIX_SOURCE
  257. void    cfmakeraw __P((struct termios *));
  258. int    cfsetspeed __P((struct termios *, speed_t));
  259. #endif /* !_POSIX_SOURCE */
  260. __END_DECLS
  261.  
  262. #endif /* !_KERNEL */
  263.  
  264. #ifndef _POSIX_SOURCE
  265.  
  266. /*
  267.  * Include tty ioctl's that aren't just for backwards compatibility
  268.  * with the old tty driver.  These ioctl definitions were previously
  269.  * in <sys/ioctl.h>.
  270.  */
  271. #include <sys/ttycom.h>
  272. #endif
  273.  
  274. /*
  275.  * END OF PROTECTED INCLUDE.
  276.  */
  277. #endif /* !_SYS_TERMIOS_H_ */
  278.  
  279. #ifndef _POSIX_SOURCE
  280. #include <sys/ttydefaults.h>
  281. #endif
  282.